package org.infinispan.it.osgi.persistence.jdbc.stringbased;
import static org.infinispan.it.osgi.util.IspnKarafOptions.perSuiteOptions;
import static org.ops4j.pax.exam.CoreOptions.options;
import org.infinispan.configuration.cache.PersistenceConfigurationBuilder;
import org.infinispan.it.osgi.persistence.jdbc.UnitTestDatabaseManager;
import org.infinispan.persistence.jdbc.configuration.JdbcStringBasedStoreConfigurationBuilder;
import org.junit.Before;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerSuite;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
/**
* @author mgencur
*/
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerSuite.class)
@Category(PerSuite.class)
public class JdbcStringBasedStoreManagedFactoryFunctionalTest extends JdbcStringBasedStoreFunctionalTest {
@Configuration
public Option[] config() throws Exception {
return options(perSuiteOptions());
}
@Before
public void setUp() {
Bundle bundle = FrameworkUtil.getBundle(getClass());
BundleContext bundleContext = bundle.getBundleContext();
org.h2.jdbcx.JdbcDataSource service = new org.h2.jdbcx.JdbcDataSource();
service.setURL("jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1");
service.setUser("sa");
service.setPassword("");
bundleContext.registerService(javax.sql.DataSource.class, service, null);
}
@Override
protected PersistenceConfigurationBuilder createCacheStoreConfig(PersistenceConfigurationBuilder persistence, boolean preload) {
JdbcStringBasedStoreConfigurationBuilder store = persistence
.addStore(JdbcStringBasedStoreConfigurationBuilder.class)
.preload(preload);
store.dataSource().jndiUrl("osgi:service/javax.sql.DataSource");
UnitTestDatabaseManager.buildTableManipulation(store.table());
UnitTestDatabaseManager.setDialect(store);
return persistence;
}
}